package com.itheima.googleplay9.ui.fragment;

import android.graphics.Color;
import android.view.View;
import android.widget.TextView;

import com.google.gson.reflect.TypeToken;
import com.itheima.googleplay9.R;
import com.itheima.googleplay9.api.DataLoader;
import com.itheima.googleplay9.api.Url;
import com.itheima.googleplay9.ui.view.randomlayout.StellarMap;
import com.itheima.googleplay9.util.ColorUtil;
import com.itheima.googleplay9.util.LogUtil;
import com.itheima.googleplay9.util.Utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * Created by lxj on 2016/5/23.
 */
public class RecommendFragment extends BaseFragment {

    private StellarMap stellarMap;
    private ArrayList<String> list;

    @Override
    protected View getSuccessView() {
        stellarMap = new StellarMap(getActivity());

        //1.设置内容距离自己边界的大小
        int padding = Utils.getDimens(R.dimen.stellarmap_padding);
        stellarMap.setInnerPadding(padding,padding,padding,padding);

        return stellarMap;
    }

    @Override
    protected Object onLoad() {
        list = (ArrayList<String>) DataLoader.getInstance().loadListData(Url.Recommend,new TypeToken<List<String>>(){}.getType());

        if(list !=null){
            Utils.runOnUIThread(new Runnable() {
                @Override
                public void run() {
                    //更新UI
                    stellarMap.setAdapter(new StellarAdapter());
                    //默认进来不显示，需要设置默认显示第几组
                    stellarMap.setGroup(0,true);
                    //设置x和y方向显示的view的密度
                    stellarMap.setRegularity(11,11);//一般推荐设置为每组有多少数据，不要过大也不要过小

                }
            });

        }

        return list;
    }

    class StellarAdapter implements StellarMap.Adapter{
        /**
         * 返回有几组的数据，即有几页的数据
         * @return
         */
        @Override
        public int getGroupCount() {
            return 3;
        }
        /**
         * 返回指定组group有多少的数据
         * @param group
         * @return
         */
        @Override
        public int getCount(int group) {
            return 11;
        }

        /**
         * 返回的是进行随机布局的view对象
         * @param group  表示当前是第几组
         * @param position  表示当前组中的位置
         * @param convertView
         * @return
         */
        @Override
        public View getView(int group, int position, View convertView) {
            TextView textView = new TextView(getActivity());
            //1.设置文本数据
            int listPosition = group*getCount(group) + position;//得到的是list中的位置
            textView.setText(list.get(listPosition));
            //2.设置随机的文字大小
            Random random = new Random();
            textView.setTextSize(random.nextInt(13)+12);//12-24的大小
            //3.上色，设置随机的字体颜色
            textView.setTextColor(ColorUtil.randomBeautifulColor());

            return textView;
        }

        /**
         * 然而并没有什么用
         * @param group
         * @param degree
         * @return
         */
        @Override
        public int getNextGroupOnPan(int group, float degree) {
            return 0;
        }

        /**
         * 当缩放动画执行完后下一组加载哪一组的数据
         * @param group 表示当前是第几组
         * @param isZoomIn
         * @return
         */
        @Override
        public int getNextGroupOnZoom(int group, boolean isZoomIn) {
            //0->1->2->0
            return (group+1)%getGroupCount();
        }
    }
}
